package com.ruoyi.shop.service.impl;

import com.ruoyi.common.utils.StringUtils;
import org.springframework.stereotype.Service;
import com.ruoyi.shop.service.IShopOnlineService;
import com.ruoyi.shop.domain.model.ShopLoginUser;
import com.ruoyi.shop.member.domain.ShopMemberOnline;

@Service
public class ShopOnlineServiceImpl implements IShopOnlineService {

	/**
	 * 通过登录地址查询信息
	 * 
	 * @param ipaddr 登录地址
	 * @param user   用户信息
	 * @return 在线会员用户信息
	 */
	public ShopMemberOnline selectOnlineByIpaddr(String ipaddr, ShopLoginUser user) {
		if (StringUtils.equals(ipaddr, user.getIpaddr())) {
			return loginUserToMemberOnline(user);
		}
		return null;
	}

	/**
	 * 通过用户名称查询信息
	 * 
	 * @param userName 用户名称
	 * @param user     用户信息
	 * @return 在线会员用户信息
	 */
	public ShopMemberOnline selectOnlineByUserName(String userName, ShopLoginUser user) {
		if (StringUtils.equals(userName, user.getUsername())) {
			return loginUserToMemberOnline(user);
		}
		return null;
	}

	/**
	 * 通过登录地址/用户名称查询信息
	 * 
	 * @param ipaddr   登录地址
	 * @param userName 用户名称
	 * @param user     用户信息
	 * @return 在线会员用户信息
	 */
	public ShopMemberOnline selectOnlineByInfo(String ipaddr, String userName, ShopLoginUser user) {
		if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) {
			return loginUserToMemberOnline(user);
		}
		return null;
	}

	/**
	 * 设置在线会员用户信息
	 * 
	 * @param user 用户信息
	 * @return 在线会员用户
	 */
	public ShopMemberOnline loginUserToMemberOnline(ShopLoginUser user) {
		if (StringUtils.isNull(user) || StringUtils.isNull(user.getMember())) {
			return null;
		}
		ShopMemberOnline shopMemberOnline = new ShopMemberOnline();
		shopMemberOnline.setTokenId(user.getToken());
		shopMemberOnline.setUserName(user.getUsername());
		shopMemberOnline.setNickName(user.getMember().getNickName());
		shopMemberOnline.setIpaddr(user.getIpaddr());
		shopMemberOnline.setLoginLocation(user.getLoginLocation());
		shopMemberOnline.setBrowser(user.getBrowser());
		shopMemberOnline.setOs(user.getOs());
		shopMemberOnline.setLoginTime(user.getLoginTime());
		return shopMemberOnline;
	}

}
